package travelDream.managedBean;

import java.io.Serializable;

import javax.ejb.EJB;
import javax.faces.application.FacesMessage;
import javax.faces.bean.ManagedBean;
import javax.faces.bean.SessionScoped;
import javax.faces.context.FacesContext;

import travelDream.bean.GestoreProdottoBase;
import travelDream.dto.HotelDTO;

@ManagedBean(name = "modificaHotelManagedBean")
@SessionScoped
public class ModificaHotelManagedBean implements Serializable{
	
private static final long serialVersionUID = 1L;
	
	@EJB
	private GestoreProdottoBase gestPB;
	
	private HotelDTO nuovoHotel;
	private HotelDTO vecchioHotel;
	
	public HotelDTO getNuovoHotel() {
		return nuovoHotel;
	}

	public void setNuovoHotel(HotelDTO nuovoHotel) {
		this.nuovoHotel = nuovoHotel;
	}

	public void modificaHotel() {
		if (this.nuovoHotel.getNome().equals("") || this.nuovoHotel.getPrezzo()==null || this.nuovoHotel.getDescrizione().equals("") || this.nuovoHotel.getLuogo().equals("")) {
			FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Errore", "Tutti i campi sono obbligatori"));
		}
		else {
			try {
				HotelDTO hotelDaOra = gestPB.modificaHotel(this.nuovoHotel,this.vecchioHotel);
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_INFO,"Info", "Modifica effettutata correttamente"));
				this.caricaHotel(hotelDaOra);
			}
			catch(Exception e) {
				FacesContext.getCurrentInstance().addMessage(null, new FacesMessage(FacesMessage.SEVERITY_ERROR,"Errore", "Modifica non effettuata"));
			}
		}
	}
	
	public String parametriHotel(HotelDTO hotel){
		this.caricaHotel(hotel);
		return "modifica_hotel.xhtml?faces-redirect=true";
	}
	
	public void caricaHotel(HotelDTO hotel){
		this.nuovoHotel = new HotelDTO();
		this.vecchioHotel = new HotelDTO();
		this.nuovoHotel.setNome(hotel.getNome());
		this.vecchioHotel.setNome(hotel.getNome());
		this.vecchioHotel.setId(hotel.getId());
		this.nuovoHotel.setId(hotel.getId());
		this.vecchioHotel.setLuogo(hotel.getLuogo());
		this.nuovoHotel.setLuogo(hotel.getLuogo());
		this.vecchioHotel.setPrezzo(hotel.getPrezzo());
		this.nuovoHotel.setPrezzo(hotel.getPrezzo());
		this.vecchioHotel.setDescrizione(hotel.getDescrizione());
		this.nuovoHotel.setDescrizione(hotel.getDescrizione());
		this.vecchioHotel.setInVendita(hotel.getInVendita());
		this.nuovoHotel.setInVendita(hotel.getInVendita());
		this.vecchioHotel.setEliminato(true);
		this.nuovoHotel.setEliminato(false);
	}
}